using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Proveedores : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       
        ib_buscarProveedor.Focus();
    }
    /*************************************
     * Metodos para buscar Proveedor
     * **********************************/
    
    /* Metodo buscar proveedor
     @param tabla : tabla de donde traera los datos
     @param cadena : columna de la tabla proveedores
     @param ingresado: valor ingresado en el textBox
    */
    protected void buscarProveedor(string tabla, string cadena, string ingresado)
    {
        SqlDataSource_proveedoresAgregar.SelectParameters.Clear();
        SqlDataSource_proveedoresAgregar.SelectCommand = "select cod_proveedor, Personas.nombres, Personas.apellidos, Proveedores.nro_documento,Proveedores.cod_tipo_documento, nombre_empresa, telefono_empresa, direccion_empresa as Direccion, Tipos_Documentos.descripcion as Documento from Personas join Proveedores on (Personas.cod_tipo_documento=Proveedores.cod_tipo_documento and Personas.nro_documento = Proveedores.nro_documento) join Tipos_Documentos ON (Personas.cod_tipo_documento= Tipos_Documentos.cod_tipo_documento) WHERE " + tabla + ".[" + cadena + "] like @" + cadena;

        SqlDataSource_proveedoresAgregar.SelectParameters.Add(cadena, TypeCode.String, "%");
        SqlDataSource_proveedoresAgregar.SelectParameters[cadena].DefaultValue = ingresado + "%";

    }
    /**/
    protected void mostrarTodosLosProveedores()
    {
        SqlDataSource_proveedoresAgregar.SelectParameters.Clear();
        SqlDataSource_proveedoresAgregar.SelectCommand = "select cod_proveedor, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Proveedores.cod_tipo_documento, nombre_empresa, telefono_empresa, direccion_empresa as Direccion, Tipos_Documentos.descripcion as Documento from Personas join Proveedores on (Personas.cod_tipo_documento=Proveedores.cod_tipo_documento and Personas.nro_documento = Proveedores.nro_documento) join Tipos_Documentos ON (Personas.cod_tipo_documento= Tipos_Documentos.cod_tipo_documento)";
        
    }
    /* Metodo para el evento del boton buscar*/
    protected void ib_buscarProveedor_Click(object sender, ImageClickEventArgs e)
    {
        /*Buscar por codigo del proveedor*/
        lb_infError.Visible = false;
        tb_codProveedorBuscar.Focus();
        if (tb_codProveedorBuscar.Text != string.Empty)
        {
            buscarProveedor("Proveedores","cod_proveedor", tb_codProveedorBuscar.Text);

        }/*Buscar por numero de documento*/
        if (tb_nroDocumentoProveedorBuscar.Text != string.Empty)
        {
            buscarProveedor("Proveedores", "nro_documento", tb_nroDocumentoProveedorBuscar.Text);
            
        }/*Buscar por nombre de la empresa*/
        if(tb_empresaBuscar.Text!=string.Empty) 
        {
            buscarProveedor("Proveedores", "nombre_empresa", tb_empresaBuscar.Text);
        }
        if (tb_codProveedorBuscar.Text.Equals("") && tb_nroDocumentoProveedorBuscar.Text.Equals("") && tb_empresaBuscar.Text.Equals(""))
        {
            mostrarTodosLosProveedores();
        }
        gv_proveedoresAgregar.DataBind();
    }
    protected void ib_agregarProveedor_Click(object sender, ImageClickEventArgs e)
    {
        lb_infError.Visible = false;
        ib_popUpPersona.Focus();
        //div_agregarProveedores.Visible = true;
        fs_agregarProveedores.Visible = true;
        fs_buscarProveedor.Visible = false;
        fs_listarProveedores.Visible = true;
        fs_listar2.Visible = false;
        //div_buscarProveedores.Visible = false;
    }

    /*Metodo para obtener datos del popUp*/
    public void gv_personas_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        
        gv_personas.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gv_personas.SelectedRow;
        string nro_documento = row.Cells[0].Text;
        string codTipoDoc = row.Cells[1].Text;
        string tipoDocumento = row.Cells[4].Text;
        string nombres = row.Cells[2].Text;
        string apellidos = row.Cells[3].Text;
        if (e.CommandName == "agregar")
        {
            tb_nroDocumento.Text = nro_documento;
            tb_tipoDocumentoProveedorAgregar.Text = codTipoDoc + " " + tipoDocumento;
            tb_nombreProveedorAgregar.Text = nombres + " " + apellidos;
            lb_codTipoDocAux.Text = codTipoDoc;
            tb_nombreEmpresaAgregar.Focus();
            mpe_personas.Hide();
        }
        else
        {
            mpe_personas.Show();
        }
        limpiarCamposPopUp();
        mostrarTodasLasPersonas();
        gv_personas.DataBind();

    }
    /**************************************************************
     * Controlar Eventos dependiendo al tipo de telefono
     * *************************************************************/
    protected void tb_telefonoEmpresaAgregar_TextChanged(object sender, EventArgs e)
    {
        
       
    }

    protected void  ddl_tipoTelefonos_SelectedIndexChanged(object sender, EventArgs e)
    {
        tb_telefonoEmpresaAgregar.Focus();
    }
    /************************************
    * POPUP Personas
    * **********************************/
    protected void ib_popUpPersona_Click(object sender, ImageClickEventArgs e)
    {
        mostrarTodasLasPersonas();
        mpe_personas.Show();
    }
    /*Busca una persona por cualquier campo*/
    protected void buscarPersona(string tabla, string columna, string ingresado)
    {
        SqlDataSource_Personas.SelectParameters.Clear();
        SqlDataSource_Personas.SelectCommand = "SELECT Personas.nro_documento, Personas.cod_tipo_documento,Personas.nombres,Personas.apellidos, Tipos_Documentos.descripcion as TipoDocumento, Personas.direccion, Personas.email FROM Personas JOIN Tipos_Documentos ON (Personas.cod_tipo_documento = Tipos_Documentos.cod_tipo_documento) WHERE " + tabla + ".[" + columna + "] like '" + ingresado + "%'";
        SqlDataSource_Personas.SelectParameters.Add(columna, TypeCode.String, "%");
        SqlDataSource_Personas.SelectParameters[columna].DefaultValue = ingresado + "%";

    }
    protected void mostrarTodasLasPersonas()
    {
        SqlDataSource_Personas.SelectParameters.Clear();
        SqlDataSource_Personas.SelectCommand = "SELECT Personas.nro_documento, Personas.cod_tipo_documento,Personas.nombres,Personas.apellidos, Tipos_Documentos.descripcion as TipoDocumento, Personas.direccion, Personas.email FROM Personas JOIN Tipos_Documentos ON (Personas.cod_tipo_documento = Tipos_Documentos.cod_tipo_documento)";

    }
    protected void ib_buscarPersona_Click(object sender, ImageClickEventArgs e)
    {
        mpe_personas.Show();
        if (tb_apellidosPopUp.Text != string.Empty)
        {
            buscarPersona("Personas", "apellidos", tb_apellidosPopUp.Text);
        }
        if (tb_nombrePopUp.Text != string.Empty)
        {
            buscarPersona("Personas", "nombres", tb_nombrePopUp.Text);
        }
        if (tb_nroDocumentoPopUp.Text != string.Empty)
        {
            buscarPersona("Personas", "nro_documento", tb_nroDocumentoPopUp.Text);
        }
        if (tb_telefonoPersonaPopUp.Text != string.Empty)
        {
            buscarPersona("Telefonos", "nro_telefono", tb_telefonoPersonaPopUp.Text);
        }
        if (ddl_tipoDocumentoPopUp.SelectedIndex > 0 || ddl_tipoDocumentoPopUp.SelectedIndex ==0)
        {
            buscarPersona("Personas", "cod_tipo_documento", (ddl_tipoDocumentoPopUp.SelectedValue).ToString());
        }
        if(tb_direccionPopUp.Text != string.Empty)
        {
            buscarPersona("Personas", "direccion", tb_direccionPopUp.Text);
        }
        if(tb_apellidosPopUp.Text.Equals("") && tb_nombrePopUp.Text.Equals("") && tb_nroDocumentoPopUp.Text.Equals("") && tb_telefonoPersonaPopUp.Text.Equals("") && tb_direccionPopUp.Text.Equals(""))
        {
            mostrarTodasLasPersonas();
        }
        gv_personas.DataBind();
        mpe_personas.Show();
    }
 
    protected void ib_agregarPersona_Click(object sender, ImageClickEventArgs e)
    {
        mpe_personas.Show();
        Page.Validate("validadoresPopUpPersonas");
        if (Page.IsValid)
        {
            long nroDocPopUP = Convert.ToInt64(tb_nroDocumentoPopUp.Text);
            Persona.agregar(nroDocPopUP, ddl_tipoDocumentoPopUp.SelectedIndex + 1, tb_nombrePopUp.Text, tb_apellidosPopUp.Text, tb_direccionPopUp.Text, tb_emailPopUpAregar.Text);
            limpiarCamposPopUp();
            gv_personas.DataBind();
        }
        mpe_personas.Show();
    }
    /***************************
     * eventos para telefonos
     **************************/
    protected void ddl_tipoTelefonosPopUp_SelectedIndexChanged(object sender, EventArgs e)
    {
        mpe_personas.Show();
        tb_telefonoPersonaPopUp.Focus();
        
    }
    protected void  tb_telefonoEmpresaAgregarPopUp_TextChanged(object sender, EventArgs e)
    {
        tb_telefonoPersonaPopUp.Focus();
        mpe_personas.Show();
    }
    protected void limpiarCamposPopUp()
    {
        tb_apellidosPopUp.Text = string.Empty;
        tb_direccionPopUp.Text = string.Empty;
        tb_emailPopUpAregar.Text = string.Empty;
        tb_nombrePopUp.Text = string.Empty;
        tb_nroDocumentoPopUp.Text = string.Empty;
        tb_telefonoPersonaPopUp.Text = string.Empty;
        ddl_tipoTelefonosPopUp.SelectedIndex = 0;
        ddl_tipoDocumentoPopUp.SelectedIndex = 0;
    }
    protected void ib_cancelarPersona_Click(object sender, ImageClickEventArgs e)
    {
        tb_apellidosPopUp.Text = string.Empty;
        tb_direccionPopUp.Text = string.Empty;
        tb_emailPopUpAregar.Text = string.Empty;
        tb_nombrePopUp.Text = string.Empty;
        tb_nroDocumentoPopUp.Text = string.Empty;
        tb_telefonoPersonaPopUp.Text = string.Empty;
        ddl_tipoTelefonosPopUp.SelectedIndex = 0;
        ddl_tipoDocumentoPopUp.SelectedIndex = 0;
        mpe_personas.Hide();
    }

    protected void ib_volver_Click(object sender, ImageClickEventArgs e)
    {
        tb_codProveedorBuscar.Focus();
        fs_agregarProveedores.Visible = false;
        fs_buscarProveedor.Visible = true;
        limpiarCamposAgregarProveedor();
    }
    /*Metodo para editar datos del proveedor*/

    protected void gvProveedoresAgregar_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gv_proveedoresAgregar.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        if (Convert.ToInt32(e.CommandArgument) == 1) {  return; }

        GridViewRow row = gv_proveedoresAgregar.SelectedRow;
        string codProveedor = row.Cells[0].Text;
        string nombres = row.Cells[1].Text;
        string apellidos = row.Cells[2].Text;
        string nro_documento = row.Cells[3].Text;
        string codTipoDoc = row.Cells[4].Text;
        string nombreEmpresa = row.Cells[5].Text;
        string telefonoEmpresa = row.Cells[6].Text;
        string direccion = row.Cells[7].Text;
        string documento = row.Cells[8].Text;
        lb_codProveedorEdit.Text = codProveedor;
        if (e.CommandName == "editar")
        {
            fs_buscarProveedor.Visible = false;
            fs_agregarProveedores.Visible = true;
            ib_cancelarAgregarProveedor.Visible = true;
            ib_salirAgregar.Visible = false;
            lb_error.Visible = false;
            ib_popUpPersona.Enabled = false;
            tb_nombreProveedorAgregar.Text = nombres+" "+apellidos ;
            tb_nombreProveedorAgregar.Enabled = false;
            tb_tipoDocumentoProveedorAgregar.Text = codTipoDoc + " " + documento;
            tb_tipoDocumentoProveedorAgregar.Enabled = false;
            tb_nroDocumento.Text = nro_documento;
            tb_nroDocumento.Enabled = false;
            ddl_tipoTelefonos.Enabled = false;
            ib_editarProveedor.Visible = true;
            ib_guardarProveedor.Visible = false;
            tb_nombreEmpresaAgregar.Text = nombreEmpresa;
            tb_telefonoEmpresaAgregar.Text = telefonoEmpresa;
            tb_direccionEmpresaAgregar.Text = direccion;
            tb_nombreEmpresaAgregar.Focus();
        }
        if (e.CommandName == "Delete")
        {
            try
            {
                Proveedor.borrar(Convert.ToInt32(codProveedor));
            }catch(Exception error){
                lb_error.Text = "No se puede eliminar el Proveedor porque esta siendo usado";
                lb_error.Visible = true;
                error.ToString();
            }
        }
    }
    /*Evento para editar*/
    protected void ib_editarProveedor_Click(object sender, ImageClickEventArgs e)
    {
        Page.Validate("validadoresAgregarProveedor");
        if (Page.IsValid)
        {
            fs_agregarProveedores.Visible = false;
            fs_buscarProveedor.Visible = true;
            ib_cancelarAgregarProveedor.Visible = false;
            ib_salirAgregar.Visible = true;
            int codProveedor = Convert.ToInt32(lb_codProveedorEdit.Text);

            Proveedor.modificar(codProveedor, tb_nombreEmpresaAgregar.Text, tb_direccionEmpresaAgregar.Text, tb_telefonoEmpresaAgregar.Text);
            limpiarCamposAgregarProveedor();
            ib_guardarProveedor.Visible = true;
            ib_editarProveedor.Visible = false;
            SqlDataSource_proveedoresAgregar.SelectParameters.Clear();
            SqlDataSource_proveedoresAgregar.SelectCommand = "select cod_proveedor, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Proveedores.cod_tipo_documento, nombre_empresa, telefono_empresa, direccion_empresa as Direccion, Tipos_Documentos.descripcion as Documento from Personas join Proveedores on (Personas.cod_tipo_documento=Proveedores.cod_tipo_documento and Personas.nro_documento = Proveedores.nro_documento) join Tipos_Documentos ON (Personas.cod_tipo_documento= Tipos_Documentos.cod_tipo_documento)";
            gv_proveedoresAgregar.DataBind();
            ib_popUpPersona.Enabled = true;
            Auditoria.guardarEvento(Session["usuario"].ToString(), "-", tb_nroDocumento.Text, "-", "Proveedores", "Numero documento");
            Auditoria.guardarEvento(Session["usuario"].ToString(), "-", tb_nombreEmpresaAgregar.Text, "-", "Proveedores", "Nombre Empresa");
            Auditoria.guardarEvento(Session["usuario"].ToString(), "-", tb_direccionEmpresaAgregar.Text, "-", "Proveedores", "Direccion empresa");
            Auditoria.guardarEvento(Session["usuario"].ToString(), "-", tb_telefonoEmpresaAgregar.Text, "-", "Proveedores", "Telefono");
        }
    }
    /*******************************
     *  PROVEEDOR
     * ****************************/
    /*Guardar Proveedor*/
    protected void ib_guardarProveedor_Click(object sender, ImageClickEventArgs e)
    {
        lb_error.Visible = false;
        tb_nombreEmpresaAgregar.Focus();
        Page.Validate("validadoresAgregarProveedor");
        if (Page.IsValid)
        {

            Proveedor.agregar(tb_nroDocumento.Text, Convert.ToInt32(lb_codTipoDocAux.Text), tb_nombreEmpresaAgregar.Text, tb_direccionEmpresaAgregar.Text, tb_telefonoEmpresaAgregar.Text);
            gv_proveedoresAgregar.DataBind();
            limpiarCamposAgregarProveedor();
            Auditoria.guardarEvento(Session["usuario"].ToString(), tb_nroDocumento.Text, "-", "-", "Proveedores", "Numero documento");
            Auditoria.guardarEvento(Session["usuario"].ToString(), tb_nombreEmpresaAgregar.Text, "-", "-", "Proveedores", "Nombre Empresa");
            Auditoria.guardarEvento(Session["usuario"].ToString(), tb_direccionEmpresaAgregar.Text, "-", "-", "Proveedores", "Direccion empresa");
            Auditoria.guardarEvento(Session["usuario"].ToString(), tb_telefonoEmpresaAgregar.Text, "-", "-", "Proveedores", "Telefono");
        }
    }
    /*****************************
     * Reportes
     * ***************************/
    protected void ib_reporte_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect("~/ReporteProveedores.aspx");
        
    }
    protected void ib_cancelarBuscar_Click(object sender, ImageClickEventArgs e)
    {
        lb_infError.Visible = false;
        tb_codProveedorBuscar.Focus();
        tb_codProveedorBuscar.Text = string.Empty;
        tb_nroDocumentoProveedorBuscar.Text = string.Empty;
        tb_empresaBuscar.Text = string.Empty;
    }
    protected void ib_cancelarAgregarProveedor_Click(object sender, ImageClickEventArgs e)
    {
        lb_error.Visible = false;
        ib_guardarProveedor.Visible = true;
        tb_nombreEmpresaAgregar.Focus();
        limpiarCamposAgregarProveedor();
        ib_editarProveedor.Visible = false;
        tb_nombreProveedorAgregar.Enabled = true;
        tb_tipoDocumentoProveedorAgregar.Enabled = true;
        ddl_tipoTelefonos.Enabled = true;
        tb_nroDocumento.Enabled = true;
    }
    protected void limpiarCamposAgregarProveedor()
    {
        tb_direccionEmpresaAgregar.Text = string.Empty;
        tb_nombreEmpresaAgregar.Text = string.Empty;
        tb_nombreProveedorAgregar.Text = string.Empty;
        tb_telefonoEmpresaAgregar.Text = string.Empty;
        tb_tipoDocumentoProveedorAgregar.Text = string.Empty;
        tb_nroDocumento.Text = string.Empty;
    }
    protected void ib_salir_Click(object sender, ImageClickEventArgs e)
    {
        mpe_personas.Hide();
    }
    protected void tb_nombrePopUp_TextChanged(object sender, EventArgs e)
    {

    }

    protected void ib_salirAgregar_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect("Proveedores.aspx");
    }
}

